from froModuleDrivers.generalDeviceDriver import GeneralDeviceDriver  # 引用百控板模块
from froModuleDrivers.nioManager import NioManager  # 引用驱动管理模块
import time
from froModuleDrivers import LOGGER


# LOGGER.set_lvl("debug")

driver_motor = GeneralDeviceDriver("192.168.50.110", 4001)  # 实例化百控板驱动
manager = NioManager(driver_motor)  # 实例化驱动管理模块，并把百控板驱动加入管理
manager.run()

print("""
本节实验13号接口为例演示了的5V直流电机控制的API.
运行程序后通过选择对应的编号来验证API功能:
0-退出程序.
1-控制电机以50%速度正转3秒后停止.
2-控制电机以50%速度反转3秒后停止.
3-控制电机刹车.
4-控制电机50%速度正转.
5-控制电机50%速度反转.
6-控制电机停止.
7-打印电机的状态.
8-打印电机的速度.
9-打印电机的状态和速度.
10-打印电机的所有参数.""")
while True:
    mode = int(input("请输入要演示的功能编号(输入0退出程序):"))
    if mode == 0:
        print("0-退出循环.")
        break
    elif mode == 1:
        print("1-控制电机以50%速度正转3秒后停止.", end=" ")
        print(driver_motor.setMotorClockwiseTime(13, 50, 3))  # 控制13号接口5V电机,控制电机以50%速度正转3秒.
    elif mode == 2:
        print("2-控制电机以50%速度反转3秒后停止.", end=" ")
        print(driver_motor.setMotorCounterclockwiseTime(13, 50, 3))  # 控制13号接口5V电机,控制电机以50%速度反转3秒.
    elif mode == 3:
        print("3-控制电机刹车.", end=" ")
        print(driver_motor.setMotorBrakes(13))  # 控制13号接口5V电机刹车
    elif mode == 4:
        print("4-控制电机50%速度正转.", end=" ")
        print(driver_motor.setMotorClockwise(13, 50))  #控制13号接口5V电机,控制电机以50%速度正转
    elif mode == 5:
        print("5-控制电机50%速度反转.", end=" ")
        print(driver_motor.setMotorCounterclockwise(13, 50))  #控制13号接口5V电机,控制电机以50%速度反转
    elif mode == 6:
        print("6-控制电机停止", end=" ")
        print(driver_motor.setMotorStop(13))  #控制13号接口5V电机停止
    elif mode == 7:
        print("7-打印电机的状态,失败返回-1;读取成功返回电机的状态:[0-关闭;1-正转;2-反转;3-刹车].返回结果:",
              driver_motor.getMotorStatus())
    elif mode == 8:
        print("8-打印电机的速度,失败返回-1;读取成功返回电机的设定速度.返回结果:",
              driver_motor.getMotorSpeed())
    elif mode == 9:
        print("9-打印电机的状态和速度,失败返回[-1,-1];读取成功返回[status,speed].返回结果:",
              driver_motor.getMotor5V())
    elif mode == 10:
        print(
            "10-打印电机的所有参数,读取失败返回[-1, -1, -1, -1];读取成功返回[status,speed,countdown,countdown_enable].返回结果:",
            driver_motor.getMotor5VAllStatus())

time.sleep(1)
manager.shutdownGracefully()  # 等待指令执行完毕后系统退出
